home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / COMAL / B-Book Series / (k)b2.d64 / hannibal < prev    next >
Text File  |  2007-02-28  |  3KB  |  118 lines

  1. 0010 //UNCLE HANNIBAL'S BACK SHOP//
  2. 0020 //WRITTEN BY CHRISTIAN BORGE//
  3. 0030 //THIS VERSION: OCT. 1981//
  4. 0040 //
  5. 0050 DIM NAME$ OF 30, ADRESS$ OF 20
  6. 0060 DIM TOWN$ OF 20, CODE$ OF 10
  7. 0070 DIM ARTICLE$(10) OF 20, PRICE(10)
  8. 0080 DIM TEXT$(10) OF 20, AMOUNT(10)
  9. 0090 DIM SPACES$ OF 40, QUANTITY(10)
  10. 0095 SPACES$(1:40):=""
  11. 0100 //*
  12. 0110 INITIALIZE
  13. 0120 REPEAT 
  14. 0130 CUSTOMER
  15. 0140 GETORDER
  16. 0150 IF LINE<>0 THEN WRITEBILL
  17. 0160 INPUT "TYPE RETURN ": CODE$
  18. 0170 UNTIL THECOWSCOMEIN
  19. 0180 //*
  20. 0190 PROC INITIALIZE 
  21. 0200 PRINT CHR$(147) //CLEAR SCREEN
  22. 0210 THECOWSCOMEIN:=FALSE
  23. 0220 I:=0
  24. 0230 REPEAT 
  25. 0240 I:=I+1
  26. 0250 READ ARTICLE$(I),PRICE(I)
  27. 0260 UNTIL EOD //END OF DATA//
  28. 0270 MAX:=I
  29. 0280 ENDPROC INITIALIZE
  30. 0290 //
  31. 0300 PROC CUSTOMER 
  32. 0310 TOTAL:=0; LINE:=0
  33. 0320 //
  34. 0330 //STUD
  35. 0340 //
  36. 0350 ENDPROC CUSTOMER
  37. 0360 //
  38. 0370 PROC GETORDER 
  39. 0380 MENU
  40. 0390 TAKEIN("ARTNO")
  41. 0400 WHILE NOT FINISHED DO
  42. 0410 LINE:=LINE+1
  43. 0420 TAKEIN("QUANTITY")
  44. 0430 INVOICELINE
  45. 0440 TAKEIN("ARTNO")
  46. 0450 ENDWHILE 
  47. 0460 ENDPROC GETORDER
  48. 0470 //
  49. 0480 PROC INVOICELINE 
  50. 0490 TEXT$(LINE):=ARTICLE$(ARTNO)
  51. 0500 AMOUNT(LINE):=PRICE(ARTNO)*QUANTITY(LINE)
  52. 0510 TOTAL:=TOTAL+AMOUNT(LINE)
  53. 0520 ENDPROC INVOICELINE
  54. 0530 //
  55. 0540 PROC WRITEBILL 
  56. 0550 PRINT CHR$(147) //CLEAR SCREEN
  57. 0560 SCREEN(4,1)
  58. 0570 PRINT NAME$
  59. 0580 PRINT ADRESS$
  60. 0590 PRINT TOWN$," ",CODE$
  61. 0600 PRINT 
  62. 0610 PRINT "QUANT.",TAB(10),"ARTICLE",TAB(30),"AMOUNT"
  63. 0620 PRINT "----------------------------------------"
  64. 0630 FOR I:=1 TO LINE DO
  65. 0640 PRINT TAB(2),QUANTITY(I)," LB",
  66. 0650 PRINT TAB(9),TEXT$(I),
  67. 0660 PRINT TAB(32-LGTH(AMOUNT(I))),AMOUNT(I)
  68. 0670 ENDFOR I
  69. 0680 PRINT TAB(28),"--------"
  70. 0690 PRINT TAB(22),"TOTAL:",TAB(32-LGTH(TOTAL)),TOTAL
  71. 0700 ENDPROC WRITEBILL
  72. 0710 //
  73. 0720 PROC TAKEIN(KINDOF$) 
  74. 0730 WINDOW(10,15)
  75. 0740 CASE KINDOF$ OF
  76. 0750 WHEN "ARTNO"
  77. 0760 REPEAT 
  78. 0770 WINDOW(10,15)
  79. 0780 INPUT "> ": ARTNO
  80. 0790 OK:=(0<=ARTNO AND ARTNO<=MAX)
  81. 0800 UNTIL OK
  82. 0810 FINISHED:=(ARTNO=0)
  83. 0820 WHEN "QUANTITY"
  84. 0830 REPEAT 
  85. 0840 SCREEN(ARTNO,20)
  86. 0850 INPUT QUANT
  87. 0860 UNTIL 0<QUANT AND INT(QUANT)=QUANT
  88. 0870 QUANTITY(LINE):=QUANT
  89. 0880 ENDCASE 
  90. 0890 ENDPROC TAKEIN
  91. 0900 //
  92. 0910 PROC MENU 
  93. 0920 PRINT CHR$(147)
  94. 0930 FOR I:=1 TO MAX DO
  95. 0940 PRINT I,". ",ARTICLE$(I)
  96. 0950 ENDFOR I
  97. 0960 PRINT "0. STOP"
  98. 0970 ENDPROC MENU
  99. 0980 //
  100. 0990 PROC WINDOW(X,Y) 
  101. 1000 SCREEN(X,1)
  102. 1010 FOR LN:=1 TO Y-X+1 DO PRINT SPACES$
  103. 1020 SCREEN(X,1)
  104. 1030 ENDPROC WINDOW
  105. 1040 //
  106. 1050 PROC SCREEN(X,Y) 
  107. 1060 PRINT CHR$(19),
  108. 1070 FOR LN:=1 TO X DO PRINT CHR$(17),
  109. 1080 FOR CH:=1 TO Y DO PRINT CHR$(29),
  110. 1090 ENDPROC SCREEN
  111. 1100 //
  112. 1110 FUNC LGTH(X) 
  113. 1120 RETURN (X>1)+(X>10)+(X>100)+(X>1000)
  114. 1130 ENDFUNC LGTH
  115. 1140 //
  116. 1150 DATA "ROAST OF VEAL",1.59,"ROLLED BEEF",1.79,"CURED PORK",1.99
  117. 1160 DATA "RIBROAST",1.49,"METTWURST",1.39,"CHOPPED PORK",1.69
  118.